package com.ruoyi.web.controller.common;

import com.ruoyi.common.constant.TaskConstants;
import com.ruoyi.system.domain.dto.TTaskInfoDto;
import com.ruoyi.system.domain.dto.TTaskPicDto;
import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.domain.TBaseInfo;
import io.swagger.annotations.Api;
import org.apache.commons.collections4.CollectionUtils;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Api("请求参数校验类")
public class RequestCheckUtil {
    /**
     * 校验基础数据baseInfo
     * @param baseInfo
     */
    public static void checkBaseInfoAdd(TBaseInfo baseInfo) {
        //1=-任务；2-游戏，3-轮播图
        Integer type = baseInfo.getType();
        baseInfo.setIsDelete(0);
        if (TaskConstants.TASK_TYPE.equals(type)){
            // 标签，分了层级的，比如一级打标签，二级主题标签，三级任务数据归类排序标签等
            Integer typeLevel = baseInfo.getTypeLevel();
            if (typeLevel ==null) {
                throw new ServiceException("标签类型不能为空");
            }
            String name = baseInfo.getName();
            if (StringUtils.isEmpty(name)){
                throw new ServiceException("标签名称不能为空");
            }
            // todo 通过标签code 和name 生成多国语言

        }else if (TaskConstants.GAME_TYPE.equals(type)){
            String name = baseInfo.getName();
            if (StringUtils.isEmpty(name)){
                throw new ServiceException("游戏名称不能为空");
            }
            String picAddress = baseInfo.getPicAddress();
            if (StringUtils.isEmpty(picAddress)){
                throw new ServiceException("图片地址不能为空");
            }
        }else if (TaskConstants.CAROUSEL_TYPE.equals(type)){
            String picAddress = baseInfo.getPicAddress();
            if (StringUtils.isEmpty(picAddress)){
                throw new ServiceException("图片地址不能为空");
            }
            Integer typeLevel = baseInfo.getTypeLevel();
            if (typeLevel ==null) {
                throw new ServiceException("轮播图地方标识不能为空");
            }
        }else {
            throw new RuntimeException("类型错误");
        }
    }

    public static void checkTaskInfoAdd(TTaskInfoDto tTaskInfo) {
        String taskName = tTaskInfo.getTaskName();
        if (StringUtils.isEmpty(taskName)){
            throw new ServiceException("任务名称不能为空");
        }
        String taskInfo = tTaskInfo.getTaskInfo();
        if (StringUtils.isEmpty(taskInfo)){
            throw new ServiceException("任务介绍不能为空");
        }
        BigDecimal money = tTaskInfo.getTaskMoney();
        if (money==null){
            throw new ServiceException("任务奖金不能为空");
        }
//        Integer needInfo = tTaskInfo.getNeedInfo();
//        if (needInfo==null){
//            throw new ServiceException("任务资料类型不能为空");
//        }
        List<TTaskPicDto> taskPicList = tTaskInfo.getTaskPicList();
        if (CollectionUtils.isEmpty(taskPicList)){
            throw new ServiceException("操作流程信息不能为空");
        }
        String taskUrl = tTaskInfo.getTaskUrl();
        if (StringUtils.isEmpty(taskUrl)){
            throw new ServiceException("任务图片不能为空");
        }
        Integer finishTime = tTaskInfo.getFinishTime();
        if (finishTime==null){
            throw new ServiceException("任务有效时长不能为空");
        }
        Date taskFinishTime = tTaskInfo.getTaskFinishTime();
        if (taskFinishTime==null) {
            throw new ServiceException("任务结束时间不能为空");
        }
    }
}
